package com.cskaoyan.javase.oop2._1extends._11final._3variable._0introduction;
/**
 * final修饰变量
 * 表示最后的变量，最终的变量，即表示常量。（表示在整个程序期间，值不会再变了）
 * final修饰变量,可以修饰:
 *      1.局部变量
 *      2.成员变量(比较少见)
 *      3.静态成员变量(最常用的)
 *
 * 在具体学习final修饰变量之前,我们要了解以下三点:
 *      1.常量的分类:
 *          a.字面值常量,比如直接写在代码中,1,2,3,"hello world",'a'等
 *          b.自定义常量,指的就是Java中final修饰的变量
 *              自定义常量相当于给常量起个名字
 *              自定义常量的特殊命名:
 *                  建议final修饰静态成员变量时,用以下格式书写常量的名字:
 *                      单词字母全部大写,然后用"_"区分每个单词
 *                  比如一个最大值的常量: MAX_VALUE
 *                  final修饰局部变量,修饰成员变量,建议仍然用普通的变量名命名(小驼峰).
 *
 *      2.final修饰变量时,可以修饰三种类型的变量: 局部变量,成员变量,静态成员变量
 *          仅表示它们的取值不再发生变化,是一个常量
 *          但是这些变量在内存中的存储位置,生命周期,使用方式等等都是不变.
 *
 *     3.final修饰变量时,从数据类型上来说,可以修饰基本数据类型变量,也可以修饰引用数据类型变量:
 *          1.修饰基本数据类型变量,表示它的取值不再变化.
 *          2.修饰引用数据类型变量,修饰的是它的引用,表示引用不可变,是一个常量
 *              表示引用不能再指向一个新的对象了
 *              但是对象的状态依然可以改变.
 *
 *
 * @since 10:09
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        final int num = 100;
        System.out.println(num);
        // num = 200;
    }
}
